]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
Add scroll-wheel support to the calendar
authorOwen W. Taylor <otaylor@fishsoup.net>
Thu, 1 Oct 2009 19:18:20 +0000 (15:18 -0400)
committerOwen W. Taylor <otaylor@fishsoup.net>
Thu, 1 Oct 2009 20:48:24 +0000 (16:48 -0400)
Make the calendar reactive and handle scroll events to change the month.
(GtkCalendar and hence the old gnome-panel calendar supported this and
it is apparently a handy way to flip through months.)

The padding is moved from the CalenderPopup to the Calendar so that the
scroll region extends all the way to the edge of the popup.

https://bugzilla.gnome.org/show_bug.cgi?id=596432

data/theme/gnome-shell.css
js/ui/calendar.js

index ae5960962f876bc5420de9998440175c9301746a..dc66b95733cdfb95056c54feca9b9c5d52fc67a4 100644 (file)
@@ -116,6 +116,9 @@ StScrollBar StButton#vhandle:hover
     background: rgba(0,0,0,0.9);
     border: 1px solid rgba(128,128,128,0.45);
     color: white;
+}
+
+#calendarPopup .calendar {
     padding: 10px;
 }
 
index 633af04718a6d7375f65a10ffe096ad39ffba695..de7f4023a3a7d698d6e992dc1140c4bb639b14d1 100644 (file)
@@ -1,5 +1,6 @@
 /* -*- mode: js2; js2-basic-offset: 4; indent-tabs-mode: nil -*- */
 
+const Clutter = imports.gi.Clutter;
 const Lang = imports.lang;
 const St = imports.gi.St;
 
@@ -51,7 +52,11 @@ Calendar.prototype = {
         this.date = new Date();
 
         this.actor = new St.Table({ homogeneous: false,
-                                    style_class: "calendar" });
+                                    style_class: "calendar",
+                                    reactive: true });
+
+        this.actor.connect('scroll-event',
+                           Lang.bind(this, this._onScroll));
 
         // Top line of the calendar '<| September 2009 |>'
         this._topBox = new St.BoxLayout();
@@ -93,6 +98,19 @@ Calendar.prototype = {
         }
     },
 
+    _onScroll : function(actor, event) {
+        switch (event.get_scroll_direction()) {
+        case Clutter.ScrollDirection.UP:
+        case Clutter.ScrollDirection.LEFT:
+            this._prevMonth();
+            break;
+        case Clutter.ScrollDirection.DOWN:
+        case Clutter.ScrollDirection.RIGHT:
+            this._nextMonth();
+            break;
+        }
+    },
+
     _prevMonth: function() {
         if (this.date.getMonth() == 0) {
             this.date.setMonth(11);